#include "errorinfo.h"

#include<QDebug>
#include<QFile>
#include <errno.h>
#include<stdlib.h>
#include<QTextCodec>

//#define MAX_SIZE 1024

ErrorInfo::ErrorInfo()
{
    error_info_path = "";
    error_info_path.append( getenv("HOME") );
    error_info_path.append("/error.info");
    qDebug() << error_info_path;
    QFile file(error_info_path);
    if( !file.open(QIODevice::ReadOnly | QIODevice::Text) )
    {
        qDebug()<<"open error.info error!";
        isEnable = false;
    }
    else
    {
        isEnable = true;
        qDebug()<< "error.info size:" << file.size();
        if(file.size())
        {
            this->isError = true;
            QTextCodec * code = QTextCodec::codecForName("utf8");
            QTextStream stream(&file);
            stream.setCodec(code);//对输出流的设置
            while (stream.atEnd() == 0)
            {
                errorInfoDes = stream.readAll();
//                qDebug() << "errorInfoDes -----------------\n" << errorInfoDes << "---------------------\n";
            }
        }
        else
        {
            this->isError = false;
        }
        file.close();
    }

}

//判读命令执行是否有错误 （判断HOME路径下error.info文件中是否有内容）
bool ErrorInfo::judge_error()
{
    return isError;
    //    error_info_path = "";
    //    error_info_path.append( getenv("HOME") );
    //    error_info_path.append("/error.info");
    //    qDebug() << error_info_path;
    //    QFile file(error_info_path);
    //    if( !file.open(QIODevice::ReadOnly | QIODevice::Text) )
    //    {
    //        qDebug()<<"open error.info error!";
    //        return false;
    //    }
    //    else
    //    {
    //        qDebug()<< "error.info size:" << file.size();
    //        if(file.size())
    //        {
    //            this->isError = true;
    //            QTextCodec * code = QTextCodec::codecForName("utf8");
    //            QTextStream stream(&file);
    //            stream.setCodec(code);//对输出流的设置
    //            while (stream.atEnd() == 0)
    //            {
    //                errorInfoDes = stream.readAll();
    //                qDebug() << "errorInfoDes -----------------\n" << errorInfoDes << "---------------------\n";
    //            }
    //        }
    //        else
    //        {
    //            this->isError = false;
    //        }
    //        file.close();
    //        return this->isError;
    //    }

}

////获取HOME路径（在读取存储在HOME路径下的error.info时使用）
//QString ErrorInfo::get_HOME_PATH()
//{
//    return getenv("HOME");
//}

////获取HOME路径（在读取存储在HOME路径下的error.info时使用）
//QString ErrorInfo::get_HOME_PATH()
//{
//    FILE *read_fp = popen("echo $HOME", "r");
//    char buffer[MAX_SIZE];
//    memset(buffer, 0, sizeof(buffer));
//    QString qstr = "";
//    if (read_fp == NULL)
//    {
//        sprintf(buffer,"error:%s\n",strerror(errno));
//        //异常处理
//        qDebug() << "popen error : " << buffer;
//    }
//    else
//    {
//        int chars_read = fread(buffer, sizeof(char), MAX_SIZE, read_fp);
//        while( buffer[(int)strlen(buffer) - 1] == '\n' )
//        {
//            buffer[strlen(buffer) -1] = '\0';
//        }
//        qstr.append(buffer);
////        qstr.append("/error.info");
////        qDebug("ERROR:\n%s\n", buffer);
////        while (chars_read > 0)//读取多数shell命令，shell命令比较长。
////        {
////            buffer[chars_read - 1] = 0;
////            qDebug("ERROR::\n%s\n", buffer);
////            chars_read = fread(buffer, sizeof(char), MAX_SIZE, read_fp);
////        }
//        pclose(read_fp);
//    }
//    qDebug() << qstr;
//    return qstr;
//}
